#include "Loading/OffReader.hpp"
#include "Loading/OffWriter.hpp"
#include "Processing/StainedVisitor.hpp"
#include "Processing/HalfVisitor.hpp"
#include "Processing/RainbowVisitor.hpp"

int main(int argc, char * argv[]){
		
	mif::Mesh vMesh = mif::Mesh();	
		
	if(argc == 2)
		mif::OffReader().Load(argv[1], vMesh);
	
	else if(argc == 3){
	
		mif::OffReader().Load(argv[1], vMesh);
		
		if(std::string(argv[2]).compare("stainedVisitor") == 0)
			mif::StainedVisitor().Colored(vMesh);
			
		else if(std::string(argv[2]).compare("halfVisitor") == 0)
			mif::HalfVisitor().Colored(vMesh);
			
		else if(std::string(argv[2]).compare("rainbowVisitor") == 0)
			mif::RainbowVisitor().Colored(vMesh);
		
	}
	else
		mif::OffReader().Load("elephant.off", vMesh);
		
	mif::OffWriter().Write("result.off", vMesh);	

	return 0;

	
}
